/**
 * 初始化任务列表，请求任务列表
 */
var tasks;
function getTaskList(param) {
    myajax({
        url: "/task/list",
        data: param.data,
        success: function(data){
            tasks = data;
            var html = "";
            for (var i = 0; i < data.length; i++) {
                html += param.init(data[i]);
            }

            $("#task_list").html(html);

            renderForm();
        }
    });
}

/**
 * 点击行
 *
 * {
 *     taskid:
 *     callback: function()
 * }
 *
 */
function trtask(params) {
    $("tr[id^='tr_task_']").css("background-color", "");
    $("tr[id^='tr_task_']").attr("alt", "");
    $("#tr_task_" + params.taskid).css("background-color", "#f1f1f1");
    $("#tr_task_" + params.taskid).attr("alt", "del");

    //根据任务id查询相应的任务
    myajax({
        url: "/task/info",
        data: {"tid": params.taskid},
        success: function(data){
            if(params.callback){
                params.callback(data);
            }
        }
    });
}

/**
 * 全选终端
 */
function checkall(flag) {
    var ztreeObj = getZtree("ztree_div");
    ztreeObj.checkAllNodes(flag);
}


//-------------------------------任务相关字段-------------------------------
var taskname=null;
var terminal=null;
var startDate=null;
var startTime=null;
var stopDate=null;
var duration=null;
var isduration=null;
var playOrder=null;
var weekMask=null;
var solution=null;
var files = null;
var terminal = null;

var area=null;
var port=null;
var isExternalMusic=null;

var speed=null;
var loopnum=null;
var info=null;
var volume=null;
/**
 * 校验表单
 */
function check_Form(){

    if(taskname != null && taskname.trim() == ""){
        alert("任务名称不能为空！");
        return false;
    }

    if(taskname.length < 0 || taskname.length > 16){
        alert("任务名称长度不能超过在0~16的范围！");
        return false;
    }

    if(terminal != null && terminal.length <= 0){
        alert("终端选择不能为空！");
        return false;
    }

    if(isExternalMusic == null || (isExternalMusic != null && !isExternalMusic) ){
        if(files != null && files.length <= 0){
            alert("上传曲目不能为空！");
            return false;
        }
    }

    //------------
    if(startDate != null && startDate.trim() == ""){
        alert("开始日期不能为空！");
        return false;
    }

    if(startTime != null && startTime.trim() == ""){
        alert("开始时间不能为空！");
        return false;
    }

    if(stopDate != null && $("#endTime").prop("disabled")==false && stopDate.trim() == ""){
        alert("结束时间不能为空！");
        return false;
    }

    if(duration != null && $("#durtime").prop("disabled")==false && duration == ""){
        alert("持续时间不能为空！");
        return false;
    }

    var r = /^\+?[1-9][0-9]*$/;　　//正整数
    var flag=r.test(duration);
    if(duration != null && $("#durtime").prop("disabled")==false && !flag){
        alert("持续时间必须为整数值！");
        return false;
    }

    if(weekMask != null && parseInt(playOrder) == 2 && weekMask == 0){
        alert("星期选择不能为空！");
        return false;
    }

    if(solution != null && solution.trim() == ""){
        alert("所选方案不能为空！");
        return false;
    }

    if(area != null && area.trim() == ""){
        alert("报警区域不能为空！");
        return false;
    }

    if(port != null && port.trim() == ""){
        alert("报警设备端口不能为空！");
        return false;
    }

    if(speed != null && speed.trim() == ""){
        alert("语速不能为空！");
        return false;
    }

    if(loopnum != null && loopnum.trim() == ""){
        alert("循环不能为空！");
        return false;
    }

    if(info != null && info.trim() == ""){
        alert("文本信息不能为空！");
        return false;
    }

    if(volume != null) {
        var r = /^\+?[0-9]+$/;　　//正整数
        var flag = r.test(volume);
        if (!flag) {
            alert("音量必须为正整数！");
            return;
        }

        if (volume < 0 || volume > 15) {
            alert("音量范围必须在是0~15之内");
            return;
        }
    }


    return true;
}


/**
 * 重置弹出框
 */
function reset_Model(taskt) {
    $("#taskname").val("Region");
    $("#loopType").val(1);
    $("#playOrder").val(1);

    var date = new Date();
    var y = date.getFullYear();    //获取完整的年份(4位,1970-????)
    var m = date.getMonth() + 1;       //获取当前月份(0-11,0代表1月)
    if(m < 10){
        m = "0" + m;
    }
    var d = date.getDate();        //获取当前日(1-31)
    if(d < 10){
        d = "0" + d;
    }

    var h = date.getHours();       //获取当前小时数(0-23)
    if(h < 10){
        h = "0" + h;
    }
    var min = date.getMinutes();     //获取当前分钟数(0-59)
    if(min < 10){
        min = "0" + min;
    }
    $("#startDate").val(y + "-" + m + "-" + d);
    $("#startTime").val(h + ":" + min);
    $("#endTime").val("");
    $("#endTime").attr("disabled", "disabled");
    $("#checkbox_end").prop("checked",false);
    $("#durtime").val("");
    $("#durtime").attr("disabled", "disabled");
    $("#checkbox_dur").prop("checked",false);
    $("#start").val("");
    $("input[name='week']:checked").prop("checked", false);

    if($("#playOrder").length > 0){
        $("input[name='week']").attr("disabled","disabled");
    }

    $("#area").val("");
    $("#fireTerminal").val(1);
    $("#port").val("");
    $("#isLevel").val(1);
    $("#isExternalMusic").prop("checked",false);
    $("#externalFireTerminal").val(1);

    $("#reporter").val(1);
    $("#speed").val($("#speed").val());
    $("#loopnum").val($("#loopnum").val());
    $("#info").val("");
    $("#volume").val(10);//重置音量，默认10

    renderForm();
}

/**
 * 重现表单
 * @param data
 * @param taskt
 */
function showData(data){
    //--------------------------------------------------------
    var taskname = data.taskname;
    var looptype = data.looptype;
    var mp3 = data.mp3;
    var users = data.users;
    //获得任务类型
    var playOrder = data.playOrder;
    //获得开始日期
    var startDate = data.startDate;
    //获得开始时间
    var startTime = data.startTime;
    //获得结束时间
    var stopDate = data.stopDate;
    //获得持续时间
    var duration = data.duration;
    //是否开启持续时间
    var isduration = data.isduration;
    //获得提前开始
    var start = data.startinadvance;
    //获得星期几
    var weekMask = data.weekMask;
    //获得音量
    var volume = data.volume;

    var collectionclient = data.collectionclient;

    var area = data.area;
    var fireTerminal = data.fireTerminal;
    var port = data.port;
    var isLevel = data.isLevel;
    var isExternalMusic = data.isExternalMusic;
    var externalFireTerminal = data.externalFireTerminal;

    var reporter = data.reporter;
    var speed = data.speed;
    var loopnum = data.loopnum;
    var info = data.info;

    //设置默认值
    if(taskname){
        $("#taskname").val(taskname);
    }
    if(looptype >= 0){
        $("#loopType").val(looptype);
    }
    if(mp3){
        showUpdate(mp3);
    }
    if(users){
        showUsers(users);
    }
    //--------------------------------------------------------
    if(playOrder){
        $("#playOrder").val(playOrder);
    }
    if(startDate){
        $("#startDate").val(startDate);
    }
    if(startTime){
        $("#startTime").val(startTime);
    }
    if(stopDate){
        $("#endTime").val(stopDate);
    }
    if(isduration > 0 && duration){
        $("#durtime").val(duration);
    }
    if(start){
        $("#start").val(start);
    }

    if(weekMask){

        //TODO 设置星期
        var weeksArray = [2,4,8,16,32,64,128];
        for(var i = 0; i < weeksArray.length; i++){
            if ((weekMask & weeksArray[i]) > 0){
                $("input[type='checkbox'][name='week'][value='" + weeksArray[i] + "']").prop("checked", true);
            }
        }
    }
    if(volume){
        //TODO 设置修改的音量
        // var slider = $("#volume").data("ionRangeSlider");
        // slider.update({
        //     from: volume
        // });
        $("#volume").val(volume);
    }
    if(stopDate){
        $("#checkbox_end").prop("checked", true);
        $("#endTime").removeAttr("disabled");
    } else {
        $("#checkbox_end").prop("checked", false);
        $("#endTime").attr("disabled", "disabled");
    }

    if(isduration > 0){
        $("#checkbox_dur").prop("checked", true);
        $("#durtime").removeAttr("disabled");
    } else {
        $("#checkbox_dur").prop("checked", false);
        $("#durtime").attr("disabled", "disabled");
    }

    if(playOrder == 2){
        $("input[name='week']").each(function(){
            $(this).removeAttr("disabled");
        });
    }

    //--------------------------------------------------------
    //设置默认值
    if(collectionclient){
        $("#collection_client").val(collectionclient);
    }
    //--------------------------------------------------------
    //设置默认值
    if(area){
        $("#area").val(area);
    }
    if(fireTerminal){
        $("#fireTerminal").val(fireTerminal);
    }
    if(port){
        $("#port").val(port);
    }
    if(isLevel){
        $("#isLevel").val(isLevel);
    }
    if(externalFireTerminal){
        $("#externalFireTerminal").val(externalFireTerminal);
    }
    if(isExternalMusic && isExternalMusic == 1){
        $("#isExternalMusic").prop("checked", true);
        $("#externalFireTerminal").removeAttr("disabled");
    } else {
        $("#isExternalMusic").prop("checked", false);
        $("#externalFireTerminal").attr("disabled", "disabled");
    }
    //--------------------------------------------------------
    //设置默认值
    if(reporter){
        $("#reporter").val(reporter);
    }
    if(speed){
        $("#speed").val(speed);
    }
    if(loopnum){
        $("#loopnum").val(loopnum);
    }
    if(info){
        $("#info").val(info);
    }

    renderForm();
}


/**
 * 回显树型群组节点
 */
function showUsers(users){

    if(!users){
        return ;
    }

    var us = JSON.parse(users);
    //获得全部节点
    var ztreeObj = getZtree();
    console.log("--->" + ztreeObj);
    var nodes = ztreeObj.transformToArray(ztreeObj.getNodes());

    A:for(var i = 0; i < us.length; i++){
        for(var j = 0; j < nodes.length; j++){
            //console.log(us[i] + " " + nodes[j].userid + " " + nodes[j].gname);
            if(us[i] == nodes[j].userid){
                ztreeObj.checkNode(nodes[j], true, true);
                //获得父节点
                if(nodes[j].getParentNode()){
                    ztreeObj.checkNode(nodes[j].getParentNode(), true, false);
                }
                continue A;
            }
        }
    }
}

/**
 * 秒转字符串
 * @param secoendTime
 */
function s2str(secoendTime){
    var str = "";
    var m = parseInt(secoendTime/60);//获得多少分钟

    if(m < 10){
        str += "0" + m;
    } else {
        str += m;
    }

    str += ":";

    var s = parseInt(secoendTime%60);//获得多少秒
    if(s < 10){
        str += "0" + s;
    } else {
        str += s;
    }

    return str;
}


/**
 * 开放或者禁用结束时间
 */
function open_end(flag) {
    if (!flag) {
        $("#endTime").attr("disabled", "disabled");
        $("#endTime").val("");
    } else {
        $("#endTime").removeAttr("disabled");
    }
}

/**
 * 开放或者禁用持续时间
 */
function open_dur(flag) {
    if (!flag) {
        $("#durtime").attr("disabled", "disabled");
        $("#durtime").val("");
    } else {
        $("#durtime").removeAttr("disabled");
    }
}

/**
 * 任务类型相关显示与隐藏
 */
function select_type(value, v) {
    if (value != v) {
        $("input[name='week']").attr("disabled", "disabled");
    } else {
        $("input[name='week']").removeAttr("disabled");
    }
    renderForm();

}

//-----------------------------任务的相关操作-------------------------------------
/**
 * 判断当前任务是否执行
 * type 1 - 修改 2 - 删除
 * 1 - 定时音乐 2 - 定时采集 3 - 消防报警 4 - 语音合成 5 - 实时音乐
 * @param type
 */
function isAction(type, taskt){

    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要编辑的任务！");
        layer.closeAll();
        return;
    }

    var tid = task.getAttribute("taskidstr");

    myajax({
        url:"/task/isaction",
        data:{"taskid":tid},
        success: function(data){
            if(!data){
                if(type == 1){
                    //修改
                    open_update_Model(taskt);
                } else if(type == 2){
                    //删除
                    delete_task(taskt);
                }
            } else {
                alert("执行中的任务不能执行'" + (type == 1 ? '编辑' : '删除') + "'操作！");
            }
        }
    });
}

/**
 * 删除任务
 */
function delete_task(taskt){
    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要删除的任务！");
        return;
    }

    if(confirm("是否确认删除选中的任务？")){
        var tid = task.getAttribute("taskidstr");

        myajax({
            url: "/task/delete",
            data: {"taskid":tid, "taskt":taskt},
            success: function(data){
                if(data) {
                    $("[alt='del']").remove();
                    $("#mp3_list").html("");
                    $("#clients_list").html("");
                } else {
                    alert("删除任务失败！");
                }
            }
        });
    }
}

/**
 * 拷贝任务
 */
function copy_task(htmlFun){
    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要拷贝的任务！");
        return;
    }

    if(confirm("是否确认复制选中的任务？")){
        var tid = task.getAttribute("taskidstr");

        myajax({
            url: "/task/copy",
            data: {"taskid":tid},
            success: function(data){
                var html = htmlFun(data);
                $("#task_list").append(html);
            }
        });
    }
}

/**
 * 手动执行
 */
function action_task(){
    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要执行的任务！");
        return;
    }

    // if(confirm("是否确认执行选中的任务？")){
    var tid = task.getAttribute("taskidstr");

    myajax({
        url: "/task/action",
        data: {"taskid":tid},
        success: function(data){

        }
    });
}

/**
 * 手动暂停
 */
function pause_task(){
    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要暂停的任务！");
        return;
    }

    // if(confirm("是否确认暂停选中的任务？")){
    var tid = task.getAttribute("taskidstr");

    myajax({
        url: "/task/pause",
        data: {"taskid":tid},
        success: function(data){

        }
    });
}

/**
 * 手动停止
 */
function stop_task(){
    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要停止的任务！");
        return;
    }

    // if(confirm("是否确认停止选中的任务？")){
    var tid = task.getAttribute("taskidstr");

    myajax({
        url: "/task/stop",
        data: {"taskid":tid},
        success: function(data){

        }
    });
}

/**
 * 上一曲
 */
function pre_task(){
    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要执行的任务！");
        return;
    }

    var tid = task.getAttribute("taskidstr");

    myajax({
        url: "/task/pre",
        data: {"taskid":tid},
        success: function(data){

        }
    });
}

/**
 * 下一曲
 */
function next_task(){
    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要执行的任务！");
        return;
    }

    var tid = task.getAttribute("taskidstr");

    myajax({
        url: "/task/next",
        data: {"taskid":tid},
        success: function(data){

        }
    });
}

//------------------------任务弹出框---------------------------------
/**
 * 打开新建任务弹出框
 *
 * 1 - 定时音乐 2 - 定时采集 3 - 消防报警 4 - 语音合成 5 - 实时音乐
 */
function open_Model(taskt) {
    if(taskt == 2 || taskt == 3){
        //-------------> 如果是定时采集
        //初始化树形结构
        getWebconClientZtree("ztree_div", {
            check:true,
            showIcon: true,
            async:false,
            init: function(ztreeObj, data){
                //初始化采集设备列表
                initOnLineClient(data);
            }
        });
    } else {
        //--------------> 如果是 实时音乐  定时音乐
        //初始化树形结构
        getWebconClientZtree("ztree_div", {
            check:true,
            showIcon: true,
            async:false
        });
    }

    if(taskt == 5 || taskt == 1 || taskt == 3){
        //重置上传
        resetUpload();
    }


    //重置表单
    reset_Model(taskt);

    if(taskt == 5 || taskt == 1 || taskt == 3) {
        //延迟刷新上传控件
        setTimeout(function () {
            uploader.refresh();
        }, 500);
    }

    //设置按钮的点击事件
    // $("#submitBtn").attr("onclick", "submit_task();");

}

/**
 * 弹出修改任务的弹出框
 */
function open_update_Model(taskt){
    var task = $("[alt='del']")[0];
    if(!task){
        alert("请选中需要编辑的任务！");
        return;
    }

    var tid = task.getAttribute("taskidstr");

    //弹出框
    open_Model(taskt);

    myajax({
        url: "/task/getTask",
        data: {"taskid":tid},
        success: function(data){
            //回显数据
            showData(data);
        }
    });

    //设置按钮的点击事件
    // $("#submitBtn").attr("onclick", "update_task('" + tid + "');");
}

/**
 * 重新渲染表单函数
 */
function renderForm() {
    layui.use('form', function() {
        var form = layui.form; //高版本建议把括号去掉，有的低版本，需要加()
        form.render();
    });
}